BUILDER_DIR=builder
FACTORY_DIR=factory
STRATEGY_DIR=strategy

SRC_BUILDER= $(wildcard $(BUILDER_DIR)/*.cpp)
OBJ_BUILDER= $(SRC_BUILDER:.cpp=.o)

SRC_FACTORY= $(wildcard $(FACTORY_DIR)/*.cpp)
OBJ_FACTORY= $(SRC_FACTORY:.cpp=.o)

SRC_STRATEGY= $(wildcard $(STRATEGY_DIR)/*.cpp)
OBJ_STRATEGY= $(SRC_STRATEGY:.cpp=.o)

SRC= $(wildcard *.cpp)
OBJ= $(SRC:.cpp=.o)

all	: $(OBJ)
	@(cd $(BUILDER_DIR) && $(MAKE))
	@(cd $(FACTORY_DIR) && $(MAKE))
	@(cd $(STRATEGY_DIR) && $(MAKE))
	
test: all
	
%.o: %.cpp
	@$(CC) -o $@ -c $< $(CFLAGS)

clean:
	@(cd $(BUILDER_DIR) && $(MAKE) $@)
	@(cd $(FACTORY_DIR) && $(MAKE) $@)
	@(cd $(STRATEGY_DIR) && $(MAKE) $@)
	rm -f *.gch

mrproper: clean
	@(cd $(BUILDER_DIR) && $(MAKE) $@)
	@(cd $(FACTORY_DIR) && $(MAKE) $@)
	@(cd $(STRATEGY_DIR) && $(MAKE) $@)
	rm -f *.o minisat-*
